import request from '../utils/request';

/**
 * 文章相关API
 */
const articleApi = {
  /**
   * 获取文章列表
   * @param {Object} params - 查询参数
   * @param {number} [params.page=1] - 页码
   * @param {number} [params.pageSize=10] - 每页条数
   * @param {number} [params.categoryId] - 分类ID
   * @param {number} [params.tagId] - 标签ID
   * @param {string} [params.status] - 文章状态: published/draft
   * @param {string} [params.keyword] - 搜索关键词
   * @param {string} [params.sortBy] - 排序字段: date/title/views
   * @param {string} [params.order] - 排序方向: asc/desc
   * @returns {Promise} - 文章列表结果
   */
  getArticles: async (params = {}) => {
    try {
      const response = await request.get('/admin/articles', { params });
      return response;
    } catch (error) {
      console.error('获取文章列表失败:', error);
      throw error;
    }
  },
  
  /**
   * 获取文章详情
   * @param {number|string} id - 文章ID
   * @returns {Promise} - 文章详情结果
   */
  getArticleDetail: async (id) => {
    try {
      const response = await request.get(`/admin/articles/${id}`);
      return response;
    } catch (error) {
      console.error('获取文章详情失败:', error);
      throw error;
    }
  },
  
  /**
   * 添加文章
   * @param {Object} article - 文章数据
   * @param {string} article.title - 文章标题
   * @param {string} article.summary - 文章摘要
   * @param {string} article.content - 文章内容
   * @param {string} article.category - 文章分类
   * @param {number} article.categoryId - 分类ID
   * @param {Array<string>} article.tags - 文章标签
   * @param {Array<number>} article.tagIds - 标签ID列表
   * @param {string} article.status - 文章状态 (published/draft)
   * @returns {Promise} - 添加结果
   */
  addArticle: async (article) => {
    try {
      const response = await request.post('/admin/articles', article);
      return response;
    } catch (error) {
      console.error('添加文章失败:', error);
      throw error;
    }
  },
  
  /**
   * 更新文章
   * @param {number|string} id - 文章ID
   * @param {Object} article - 文章数据
   * @returns {Promise} - 更新结果
   */
  updateArticle: async (id, article) => {
    try {
      const response = await request.put(`/admin/articles/${id}`, article);
      return response;
    } catch (error) {
      console.error('更新文章失败:', error);
      throw error;
    }
  },
  
  /**
   * 删除文章
   * @param {number|string} id - 文章ID
   * @returns {Promise} - 删除结果
   */
  deleteArticle: async (id) => {
    try {
      const response = await request.delete(`/admin/articles/${id}`); 
      return response;
    } catch (error) {
      console.error('删除文章失败:', error);
      throw error;
    }
  },
  

  
  /**
   * 更新文章状态
   * @param {number|string} id - 文章ID
   * @param {string} status - 文章状态 (published/draft)
   * @returns {Promise} - 更新结果
   */
  updateArticleStatus: async (id, status) => {
    try {
      const response = await request.patch(`/admin/articles/${id}/status`, { status });
      return response;
    } catch (error) {
      console.error('更新文章状态失败:', error);
      throw error;
    }
  }
};

export default articleApi;
export { articleApi };
